This is a list of things I often trot out as things you should do from the start in a project. It isn't polished and by no means complete but I reference it frequently.

  • Linting - make it automatic
  • Timezone aware dates / times everywhere, always
  • Build early, build often
  • Test early, test often
  • Release early, release often
  • Your first environment should be your test environment,
    • Don't let it turn into production
  • Test environments should not contain production data
  • Make local dev / running / testing easy
  • How do you know you aren’t sending data out of production?
  • Use containers
  • Use IaC / declarative infra
  • Use environment variables
  • Have a secrets management strategy from the start, even if you have to change it later
  • Logs, where are they?
  • How do you know you’re down?
  • Git.Ops.
  • Have a data migration plan before you need it
  • Fix your fucking tests
  • Don’t start with passwords; use modern, phishing resistant auth from the start
  • Pin dependencies
    • Automate updating dependencies